<?php

/**
 *  活动
 */

namespace Home\Model;

class Game {
    /*
     * 检测是否开启活动
     */

    public static function is_open($code) {
        if (!$code) {
            return FALSE;
        }
        $where = array(
            'is_close' => 0,
            'seller_id' => $code['seller_id'],
            "goods_id" => $code['good_id'],
                //"start_id" => array("egt",$code['id']),
                //"end_id" => array("elt",$code['id'])
        );
        $game = M('game')->where($where)->find();
        if ($game && ($game['start_id'] <= $code['id']) && ($game['end_id'] >= $code['id'])) {
            switch ($game['type']) {
                case "1":
                    $game['url'] = U('Game/dazhuanpan', array('id' => $game['id']));
                    break;
                case "2":
                    $game['url'] = U("Game/index", array("id" => $game['id'], "codeid" => $code['id']));
                    break;
                case "3":
                    $game['url'] = U("Game/hongbao", array("id" => $game['id'], "codeid" => $code['id']));
                    break;
            }

            //如果此codeid在活动二维码范围之内，并且当前时间在活动范围之间
            $start = strtotime($game['start_time']);
            $end = strtotime($game['end_time']);
            $now = time();
            if ($now >= $start && $now <= $end) {
                return $game;
            } else {
                return FALSE;
            }
        } else {
            return false;
        }
    }

    /*
     * 经典的概率算法， 
     * $proArr是一个预先设置的数组， 
     * 假设数组为：array(100,200,300，400)， 
     * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内，  
     * 如果不在，则将概率空间，也就是k的值减去刚刚的那个数字的概率空间， 
     * 在本例当中就是减去100，也就是说第二个数是在1，900这个范围内筛选的。 
     * 这样 筛选到最终，总会有一个数满足要求。 
     * 就相当于去一个箱子里摸东西， 
     * 第一个不是，第二个不是，第三个还不是，那最后一个一定是。 
     * 这个算法简单，而且效率非常 高， 
     * 关键是这个算法已在我们以前的项目中有应用，尤其是大数据量的项目中效率非常棒。 
     */

    public function get_rand($proArr) {
        $result = '';
        //概率数组的总概率精度   
        $proSum = array_sum($proArr);
        //概率数组循环   
        foreach ($proArr as $key => $proCur) {
            $randNum = mt_rand(1, $proSum);
            if ($randNum <= $proCur) {
                $result = $key;
                break;
            } else {
                $proSum -= $proCur;
            }
        }
        unset($proArr);
        return $result;
    }
    
    // 过滤掉emoji表情 
    function filterEmoji($str) {
        $str = preg_replace_callback('/./u', function (array $match) {
                    return strlen($match[0]) >= 4 ? '' : $match[0];
                }, $str);
        return $str;
    }

}
